export default str => {
  // 建立数据结构，堆栈，保存数据
  let r = [];
  // 通过正则匹配 0011 | 01 | 10 | 1100 。。。匹配成功返回
  let match = str => {
    // 确定第一位是0还是1， 并且确定长度
    let j = str.match(/^(0+|1+)/)[0];
    // 通过j的第一位取反拿到1或者0，并且拼接长度  j ^ 1 如果j等于0或者1，通过这种方式都会得到取反
    let o = (j[0] ^ 1).toString().repeat(j.length);
    let reg = new RegExp(`^(${j}${o})`);
    if (reg.test(str)) {
      return RegExp.$1;
    } else {
      return ""
    }
  };
  // 循环字符串的每一项
  for (let i = 0; i < str.length - 1; i++) {
    let sub = match(str.slice(i));
    if (sub) {
      r.push(sub);
    }
  }
  return r;
};
